
        <html>
			<head>
			     <title>FYSBIS分析报告：SOFACY的Linux后门 - leonnewton</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/12943">http://drops.wooyun.org/tips/12943</a></h1>
				
      <p>
        <p><strong>本文翻译自：</strong> <a href="http://researchcenter.paloaltonetworks.com/2016/02/a-look-into-fysbis-sofacys-linux-backdoor/">http://researchcenter.paloaltonetworks.com/2016/02/a-look-into-fysbis-sofacys-linux-backdoor/</a><br />
<strong>原作者：Bryan Lee 和 Rob Downs</strong><br />
<strong>版权归原作者所有</strong></p>

<h1>0x00 简介</h1>

<hr />

<p>Sofacy组织，也被称为APT28或者Sednit，是一个相当知名的网络攻击间谍组织，据信跟俄罗斯有关。他们的攻击目标遍布全世界，主要针对政府、防御组织和多个东欧国家政府。已经有很多关于他们活动的报告，以至于已经有<a href="https://en.wikipedia.org/wiki/Sofacy_Group">维基百科</a>的词条。</p>

<p>从这些报告里，我们发现该组织有丰富的工具和策略，包括利用0day漏洞攻击通用应用程序，例如JAVA或者Microsoft Office；大量使用鱼叉式网络钓鱼；利用合法网站进行水坑式攻击并且目标包括各类操作系统--Windows、OSX、Linux、iOS。</p>

<p>Linux下的恶意软件Fysbis是Sofacy很喜欢使用的一个工具，虽然这个工具不是特别的精巧复杂。但由于Linux安全总体上是一个不是很成熟的领域，特别是恶意软件方面。所以，这个工具帮助了Sofacy组织进行成功攻击是完全有可能的。</p>

<!--more-->

<h1>0x01 恶意软件评估</h1>

<hr />

<p>Fysbis是一个模块化的Linux木马/后门，将插件和控制模块作为不同的类来实现。一些分析把这个恶意软件归类到Sednit组织命名名称里。这个恶意软件包括32位和64位的<a href="http://www.linuxjournal.com/article/1059">ELF</a>文件。此外，Fysbis在有或者没有root权限的情况下都可以把自己植入目标系统。当需要选择安装的账户时，这增加了攻击的选择。</p>

<p>对3个样本的总结信息如下：</p>

<p><strong>Table 1: Sample 1 – Late 2014 Sofacy 64-bit Fysbis</strong></p>

<table>
  <tr>
    <td>
      MD5
    </td>
    
    <td>
      364ff454dcf00420cff13a57bcb78467
    </td>
  </tr>
  
  <tr>
    <td>
      SHA-256
    </td>
    
    <td>
      8bca0031f3b691421cb15f9c6e71ce193355d2d8cf2b190438b6962761d0c6bb
    </td>
  </tr>
  
  <tr>
    <td>
      ssdeep
    </td>
    
    <td>
      3072:n+1R4tREtGN4qyGCXdHPYK9l0H786O26BmMAwyWMn/qwwiHNl:n+1R43QcILXdF0w6IBmMAwwCwwi
    </td>
  </tr>
  
  <tr>
    <td>
      Size
    </td>
    
    <td>
      141.2 KB (144560 bytes)
    </td>
  </tr>
  
  <tr>
    <td>
      Type
    </td>
    
    <td>
      ELF 64-bit (stripped)
    </td>
  </tr>
  
  <tr>
    <td>
      Install as root
    </td>
    
    <td>
      /bin/rsyncd
    </td>
  </tr>
  
  <tr>
    <td>
      Root install desc
    </td>
    
    <td>
      synchronize and backup service
    </td>
  </tr>
  
  <tr>
    <td>
      Install as non-root
    </td>
    
    <td>
      ~/.config/dbus-notifier/dbus-inotifier
    </td>
  </tr>
  
  <tr>
    <td>
      Non-root install desc
    </td>
    
    <td>
      system service d-bus notifier
    </td>
  </tr>
  
  <tr>
    <td>
      C2
    </td>
    
    <td>
      azureon-line[.]com (TCP/80)
    </td>
  </tr>
  
  <tr>
    <td>
      Usage Timeframe
    </td>
    
    <td>
      Late 2014
    </td>
  </tr>
</table>

<p><strong>Table 2: Sample 2 – Early 2015 Sofacy 32-bit Fysbis</strong></p>

<table>
  <tr>
    <td>
      MD5
    </td>
    
    <td>
      075b6695ab63f36af65f7ffd45cccd39
    </td>
  </tr>
  
  <tr>
    <td>
      SHA-256
    </td>
    
    <td>
      02c7cf55fd5c5809ce2dce56085ba43795f2480423a4256537bfdfda0df85592
    </td>
  </tr>
  
  <tr>
    <td>
      ssdeep
    </td>
    
    <td>
      3072:9ZAxHANuat3WWFY9nqjwbuZf454UNqRpROIDLHaSeWb3LGmPTrIW33HxIajF:9ZAxHANJAvbuZf454UN+rv eQLZPTrV3Z
    </td>
  </tr>
  
  <tr>
    <td>
      Size
    </td>
    
    <td>
      175.9 KB (180148 bytes)
    </td>
  </tr>
  
  <tr>
    <td>
      Type
    </td>
    
    <td>
      ELF 32-bit (stripped)
    </td>
  </tr>
  
  <tr>
    <td>
      Install as root
    </td>
    
    <td>
      /bin/ksysdefd
    </td>
  </tr>
  
  <tr>
    <td>
      Root install desc
    </td>
    
    <td>
      system kernel service defender
    </td>
  </tr>
  
  <tr>
    <td>
      Install as non-root
    </td>
    
    <td>
      ~/.config/ksysdef/ksysdefd
    </td>
  </tr>
  
  <tr>
    <td>
      Non-root install desc
    </td>
    
    <td>
      system kernel service defender
    </td>
  </tr>
  
  <tr>
    <td>
      C2
    </td>
    
    <td>
      198.105.125[.]74 (TCP/80)
    </td>
  </tr>
  
  <tr>
    <td>
      Usage Timeframe
    </td>
    
    <td>
      Early 2015
    </td>
  </tr>
</table>

<p><strong>Table 3: Sample 3 – Late 2015 Sofacy 64-bit Fysbis</strong></p>

<table>
  <tr>
    <td>
      MD5
    </td>
    
    <td>
      e107c5c84ded6cd9391aede7f04d64c8
    </td>
  </tr>
  
  <tr>
    <td>
      SHA-256
    </td>
    
    <td>
      fd8b2ea9a2e8a67e4cb3904b49c789d57ed9b1ce5bebfe54fe3d98214d6a0f61
    </td>
  </tr>
  
  <tr>
    <td>
      ssdeep
    </td>
    
    <td>
      6144:W/D5tpLWtr91gmaVy+mdckn6BCUdc4mLc2B9:4D5Lqgkcj+
    </td>
  </tr>
  
  <tr>
    <td>
      Size
    </td>
    
    <td>
      314.4 KB (321902 bytes)
    </td>
  </tr>
  
  <tr>
    <td>
      Type
    </td>
    
    <td>
      ELF 64-bit (not stripped)
    </td>
  </tr>
  
  <tr>
    <td>
      Install as root
    </td>
    
    <td>
      /bin/ksysdefd
    </td>
  </tr>
  
  <tr>
    <td>
      Root install desc
    </td>
    
    <td>
      system kernel service defender
    </td>
  </tr>
  
  <tr>
    <td>
      Install as non-root
    </td>
    
    <td>
      ~/.config/ksysdef/ksysdefd
    </td>
  </tr>
  
  <tr>
    <td>
      Non-root install desc
    </td>
    
    <td>
      system kernel service defender
    </td>
  </tr>
  
  <tr>
    <td>
      C2
    </td>
    
    <td>
      mozilla-plugins[.]com (TCP/80)
    </td>
  </tr>
  
  <tr>
    <td>
      Usage Timeframe
    </td>
    
    <td>
      Late 2015
    </td>
  </tr>
</table>

<p>总的来说，这些样本不是很复杂但是却很有效。这些样本表明了一个事实：APT攻击者并不需要高级的手段来攻击目标。相反，攻击者把高级的恶意软件和0day利用保留在手里而只使用刚好能达到目的的资源进行攻击。因此分析人员有理由用一些捷径或者trick来缩短评估威胁的时间。也就是说，分析人员应该总是通过一些方法来更有效的工作而不是一味蛮干。</p>

<h1>0x02 利用字符串充分获取信息</h1>

<hr />

<p>字符串本身就可以体现很多信息，提高了诸如静态分析分类的效率（例如使用<a href="https://plusvic.github.io/yara/">Yara</a>）。表1和表2Fysbis样本安装和目标平台信息就是很好的例子。</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805302351026sofacy1.png" alt="p1" /> 图1：从字符串中获得的Fysbis安装和目标平台信息</p>

<p>从这个例子中，我们可以发现文件的安装路径和通过匹配来确定具体的Linux版本。后面跟着的是一系列延长在目标上的存活时间的Linux shell命令。</p>

<p>另一个例子是跟样本功能相关的信息。</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805302510158sofacy2.png" alt="p2" /> 图2：从字符串中泄露的功能信息</p>

<p>图2 表明了交互状态和返回的信息，让分析人员对样本功能有个大概的印象。除了可以帮助静态分析，这也可以作为后面事件响应优先级和评估威胁的出发点。</p>

<h1>0x03 符号信息可以缩短分析时间</h1>

<hr />

<p>有趣地是，最新的ELF 64位文件(表3的样本)在使用前没有strip，这导致在文件中会有额外的符号信息。对Windows <a href="https://msdn.microsoft.com/en-us/library/ms809762.aspx">PE</a>比较熟悉的分析人员可以认为就是Debug版本和Release版本的区别。作为比较，如果我们分析下Fysbis strip过的样本跟 "RemoteShell" 相关的字符串，就只能发现下面的字符串：</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805302646075sofacy3.png" alt="p3" /> 图3：Fysbis strip后样本跟RemoteShell功能相关的字符串</p>

<p>跟没有strip的样本比较：</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805302844729sofacy4.png" alt="p4" /> 图4：Fysbis 没有strip的样本跟RemoteShell功能相关的字符串</p>

<p>一些像这样的静态分析技巧可以帮助分析人员快速分析样本的功能，更重要的是，在后续相似样本关联和发现也有用处。</p>

<p>此外，最新的样本表明恶意样本进行了小的改进，最显著的就是进行了混淆。表1和表2的样本都很清晰地泄露了安装信息。这跟表3的样本是不同的。用反汇编工具看下这个没有strip的样本，下面展示了在有root权限的账户中解密安装信息的相关信息。</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805302995942sofacy5.png" alt="p5" /> 图5：样本3安装信息的汇编代码</p>

<p>在这个例子中，从符号信息可以看出解密的方法，有mask，路径，名字和byte数组。</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805303129451sofacy6.png" alt="p6" /> 图6：样本3跟root权限安装相关的byte数组的汇编代码</p>

<p>这个解密的算法是，用一个byte数组作为mask，作用到另外的byte数组上，使用循环并且有2个key的异或算法来生成恶意样本的安装路径、文件名和Linux root账户相关的信息。由于INSTALLUSER byte数组的存在，可以在非root情况下安装恶意样本。相同的解密方法也可以用来解密样本配置的C2信息，这进一步说明很少的符号进行就可以在很大程度上提高样本分析的完整性。</p>

<p>如果你想知道更多关于Fysbis的信息，样本的分析报告可以在<a href="http://vms.drweb.ru/virus/?i=4276269">这里</a>获得。</p>

<h1>0x04 基础设施分析</h1>

<hr />

<p>就像Unit 42在其他文章里说的一样，我们发现攻击者好像不太愿意更换他们的基础设施。这可能是因为不想增加额外的资源，或者仅仅是因为保持对原有设施的熟悉程度来保证时效性。在Sofacy组织使用的Fysbis样本中都发现了上述2种情况。</p>

<p>最老的一个样本（表1），跟域名azureon-line[.]com进行交互，这个域名已经被广泛证实是Sofacy组织使用的进行控制命令的域名。通过被动DNS，我们发现这个域名解析到2个初始的IP 193.169.244[.]190 and 111.90.148[.]148，也被映射到Sofacy在这段时间内使用的其他域名。</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805303276973sofacy7.png" alt="p7" /> 图7：样本1的C2信息</p>

<p>表2的样本，关联的IP也是Sofacy组织使用的198.105.125[.]74。这个IP跟一个叫CHOPSTICK的工具有关，具体可以<a href="https://www2.fireeye.com/rs/fireye/images/rpt-apt28.pdf">查看</a>。</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805303426834sofacy8.png" alt="p8" /> 图8：样本2的C2信息</p>

<p>最新的样本（表3），是一个之前未知的域名 mozilla-plugins[.]com。这跟前文Sofacy组织的策略相互印证，即使用跟合法公司相似的名字来作为基础设施的名字。这个域名和IP反查结果在之前都没有发现过，表明表3的样本可能跟新的团体相关。把样本3的二进制文件跟另外2个比较，发现在代码层面和行为层面都有很大的相似性。</p>

<p><img src="http://static.wooyun.org//drops/20160218/2016021805303584096sofacy9.png" alt="p9" /> 图9：样本3的C2信息</p>

<h1>0x05 结论</h1>

<hr />

<p>Linux是在商业和家庭中常见的操作系统，并且有很多版本。数据中心、云服务都喜欢使用Linux，在网络和应用服务器市场也越来越受欢迎。Linux也是Android和其他几种嵌入式系统的基础。使用Linux的好处——特别是在商业公司——可以总结到3点：低成本的TCO、安全性和功能丰富。数据统计和比较可以清楚地评估TCO和功能，但是安全性需要深入地研究。Linux方面的知识在工业界的各个应用上都非常需要，从系统管理、大数据分析和事件响应等等。</p>

<p>大部分的商业活动还是在Windows环境下，这也是说核心基础设施也使用Windows服务器（例如Active Directory、SharePoint等等应用）。这表明，从实际的情况看，大部分情况下还是在支持和保护Windows下的设施。一部分公司的IT专家对Linux还不是很熟悉，特别是对于网络防护人员来说。识别和确认潜在的威胁，需要对什么是正常操作有一定的熟悉程度，这样才能发现异常情况。对于环境中的其他软件也是一样的，正常操作完全依赖于指定软件在公司中扮演的角色和功能。</p>

<p>对非Windows平台缺少专业知识和了解对公司的安全形势增加了很大的危险。最近的一个例子就是，Linux上的漏洞<a href="http://www.pcworld.com/article/3023870/security/linux-kernel-flaw-endangers-millions-of-pcs-servers-and-android-devices.html">CVE-2016-0728</a>表明相关平台潜在威胁的广度。专业或者投机的攻击者，尽管他们有不同的动机，都增加了平台暴露的风险。尽管很多人认为Linux的特点让它有更高的安全性（实际上并不正确），但Linux上的恶意软件和漏洞确实存在，并且已经被攻击者在实际中用来攻击。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          